# !/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
@作者 杨阳
@时间 2018-07-20
@说明 网站管理相关实体类
@注意事项
"""
from util import ChatUtil
from util.ThreadPluginsInitUtil import db


class TChatUserModel(db.Model):
    """
    存储用户与二维码uuid的关系
    用户首先来表里获得uuid,如果得到后判断是否登录，如果未登录，重新生成一个再更新到表中
    """
    __tablename__ = "t_chat_user"
    qr_uuid = db.Column(db.String(100), index=True, comment="生成微信登录二维码的uuid，同时用户登录时也会用这个uuid，比较重要")
    user_id = db.Column(db.String(100), db.ForeignKey("t_user.id"), primary_key=True, index=True, comment="用户id")  # 外键

    @staticmethod
    def get_chat_by_userid(user_id):
        """
        根据用户id获取,如果没有得到，那么生成一个，揷入到库中，然后再返回
        :param user_id:
        :return:
        """
        t_chat = TChatUserModel.query.filter(TChatUserModel.user_id == user_id).first()
        return t_chat

    @staticmethod
    def add_char(user_id, qr_uuid):
        """
        在t_chat_user表中揷入记录
        :param user_id:         用户id
        :param qr_uuid:         生成二维码的uuid
        :return:                TChatUserModel
        """
        t_chat = TChatUserModel()
        t_chat.user_id = user_id
        t_chat.qr_uuid = qr_uuid
        db.session.add(t_chat)
        db.session.commit()
        return t_chat

    @staticmethod
    def update_chat(user_id, qr_uuid):
        """
        更新用户的qr_uuid
        :param user_id:     用户id
        :param qr_uuid:     生成二维码的uuid
        :return:            TChatUserModel
        """
        t_chat = TChatUserModel.get_chat_by_userid(user_id)
        t_chat.qr_uuid = qr_uuid
        db.session.commit()
        return t_chat
